﻿using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System;

namespace EzDesk.Apps.Model.Attendance
{
    [DataContract]
    public class AttendanceConfig
    {
        /// <summary>
        /// 标准上班时间
        /// </summary>
        [DataMember]
        public SimpleTime StdOnDutyTime { get; set; }

        /// <summary>
        /// 标准上班时间延迟量（延迟这个时间仍然不算迟到）
        /// </summary>
        [DataMember]
        public TimeSpan StdOnDutyTimeDelay { get; set; }

        /// <summary>
        /// 弹性上班时间提前量
        /// </summary>
        [DataMember]
        public TimeSpan OnDutyOffsetForward { get; set; }

        /// <summary>
        /// 弹性上班时间延后量
        /// </summary>
        [DataMember]
        public TimeSpan OnDutyOffsetAfterward { get; set; }

        /// <summary>
        /// 标准下班时间
        /// </summary>
        [DataMember]
        public SimpleTime StdOffDutyTime { get; set; }

        /// <summary>
        /// 每日标准工时, 如果你设置的这个值太小，得给提醒，否则员工天天杯具
        /// </summary>
        [DataMember]
        public TimeSpan StdManhours { get; set; }

        /// <summary>
        /// 午休开始时间 (这段时间不会算作一天)
        /// </summary>
        [DataMember]
        public SimpleTime LunchBreakStartOn { get; set; }

        /// <summary>
        /// 午休结束时间
        /// </summary>
        [DataMember]
        public SimpleTime LunchBreakEndOn { get; set; }

        /// <summary>
        /// 晚上深度加班的时间点
        /// </summary>
        [DataMember]
        public SimpleTime DeepOvertimeOn { get; set; }

        /// <summary>
        /// 头一天深度加班后允许晚到的时间
        /// </summary>
        [DataMember]
        public int AllowLateMiniutes { get; set; }

        //todo: 一些其他可能的配置功能
        // 1. 配置午休是否需要打卡
        // 2. 配置迟到时间算法（精确到半小时，精确到分钟，精确到一小时？）
    }
}
